package com.sugar.queryinfo.module.business.service.dataquery;

import javax.validation.*;
import com.sugar.queryinfo.module.business.controller.admin.dataquery.vo.*;
import com.sugar.queryinfo.module.business.controller.admin.dataquery.vo.audit.DataQueryAuditSimpleRespVO;
import com.sugar.queryinfo.module.business.controller.admin.dataquery.vo.audit.DataQuerySaveAuditReqVO;
import com.sugar.queryinfo.module.business.controller.admin.dataquery.vo.audit.DataQuerySaveAuditRespVO;
import com.sugar.queryinfo.module.business.dal.dataobject.dataquery.DataQueryDO;
import com.sugar.queryinfo.framework.common.pojo.PageResult;

/**
 * 数据查询 Service 接口
 *
 * @author Ysugar
 */
public interface DataQueryService {

    Object refreshData(DataQueryRefreshReqVO reqVO);

    /**
     * 创建数据查询
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createDataQuery(@Valid DataQuerySaveReqVO createReqVO, Long userId, Long deptId);

    /**
     * 更新数据查询
     *
     * @param updateReqVO 更新信息
     */
    void updateDataQuery(@Valid DataQuerySaveReqVO updateReqVO);

    /**
     * 删除数据查询
     *
     * @param id 编号
     */
    void deleteDataQuery(Long id);

    void deleteDataQueryAll();

    /**
     * 获得数据查询
     *
     * @param id 编号
     * @return 数据查询
     */
    DataQueryRespVO getDataQuery(Long id);

    /**
     * 获得数据查询分页
     *
     * @param pageReqVO 分页查询
     * @return 数据查询分页
     */
    PageResult<DataQueryDO> getDataQueryPage(DataQueryPageReqVO pageReqVO);

    void dataQueryAuditAddBlacklist(Long id, String remark);

    DataQuerySaveAuditRespVO createDataQueryAudit(String content, Long userId, Long deptId);

    PageResult<DataQueryAuditSimpleRespVO> getDataQueryPageAudit(@Valid DataQueryPageReqVO pageReqVO);

    DataQuerySaveAuditRespVO getDataQueryAudit(Long id);

    Long createAuditDataQuery(DataQueryAuditSaveReqVO auditSaveReqVO, Long userId, Long deptId);
}